home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #2 / Monster Media No. 2 (Monster Media)(1994).ISO / bbs_util / bcheck12.zip / BCHECK12.DOC < prev    next >
Text File  |  1994-07-17  |  41KB  |  806 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.                                                                   BCHECKERS |
  7.                                                                             |
  8.                                                                 version 1.2 |
  9.                                                                             |
  10.                                                                             |
  11.                             A multi-node checkers door for most BBS systems |
  12.                                                Written in C by Bruce Bowman |
  13.                                                                             |
  14.                                                     Released August 1, 1994 |
  15.                                                                             |
  16.                                INTRODUCTION
  17.                                ------------                                                                          
  18.  --------------------------------------------------------------------------
  19. | >Disclaimer<  Throughout this document, I have used the masculine gender |
  20. | when referring to a "generic" person.   This is only to avoid continuous |
  21. | use of such things as (s)he, which I find annoying. I have total respect |
  22. | for the females of the human race; I even married one. So lighten up.    |
  23. |   --------------------------------------------------------------------   |
  24. |                          -= LEGAL MUMBO-JUMBO =-                         |
  25. | >Disclaimer #2<  The author of this program, Bruce Bowman, promises only |
  26. | that this program will take up space on your hard drive (and perhaps not |
  27. | even that). I've put a lot of my time and sweat equity into this, and in |
  28. | return I ask only that you  try it and remit a token sum if you continue |
  29. | to do so. I make no claims for its suitability for a particular purpose, |
  30. | and guarantee nothing  whatsoever regarding potential damage to your own |
  31. | computer or hard-acquired files.  I can only suggest that you  do what I |
  32. | do, and back up  your hard drive frequently.  If the unthinkable happens |
  33. | and some terrible fate should befall you  as a direct or indirect result |
  34. | of using BCheckers, you will have my utmost sympathy -- but that's about |
  35. | all. So there. :^)                                                       |
  36. |                           --------------------                           |                      
  37. | This software is copyrighted: You're subject to the associated penalties |
  38. | of law if you attempt to reverse-engineer it, hack the key routines,  or |
  39. | otherwise steal the benefits of all my aforementioned sweat equity.      |
  40.  --------------------------------------------------------------------------
  41.  
  42. As a sysop of a FidoNet BBS, I was disappointed in the lack of a good,
  43. non-interactive checkers door. Sure, there were some that allowed inter-
  44. node play and the like, but these were expensive and few offered any 
  45. decent ANSI graphics and the simple ability to have callers make moves 
  46. on alternate logons. I also wanted to try my hand at programming in C, 
  47. having learned a number of other programming languages. BCheckers is the 
  48. result of this effort; and at only $10 is a bargain in shareware.
  49.  
  50. BCheckers offers the following sysop features (and more I've probably
  51. overlooked in these docs):
  52.  
  53. -  As you would expect, BCheckers monitors carrier detect functions, to
  54.    automatically recover when a user drops carrier.                    
  55.                                                                        
  56. -  Includes a fully-adjustable inactivity timeout monitor. A warning is
  57.    sent 5 seconds before the caller is ejected.
  58.  
  59. -  Share-aware file i/o for use in multi-node BBS systems. You must have 
  60.    DOS's SHARE.EXE loaded for multi-node use.             
  61.  
  62. -  Supports most popular BBS door information files, such as DORINFO1.DEF,
  63.    EXITINFO.BBS, CHAIN.TXT, DOOR.SYS, etc.  
  64.  
  65. -  Displays and updates a QuickBBS-style status line, with information 
  66.    available to the sysop such as user name, location, baud rate, time left, 
  67.    function keys, ANSI and AVATAR settings, and so on.
  68.    
  69. -  Keeps track of a user "wants-chat" indicator, just like the one in
  70.    RemoteAccess, QuickBBS and other BBS systems. Allows for sysop page from
  71.    the door, and integrated chat mode.
  72.  
  73. -  Provides the sysop with all the standard function keys for adjusting user 
  74.    time, hanging up on or even locking out the user -- and sysop shell to DOS.
  75.  
  76. -  Full support for locked baud-rates of up to 115200 baud, using the FOSSIL
  77.    driver for maximum compatibility with any system. If a FOSSIL is not
  78.    available, BCheckers will use its own communications routines. Auto-detect
  79.    of local operation.
  80.  
  81. -  BCheckers is also DesqView and Windows aware. It will automatically check 
  82.    for the presence of a multitasker, and if available, will perform all of 
  83.    its screen output through the appropriate function calls.
  84.  
  85.                         CONVERTING FROM VERSION 1.0
  86.                         ---------------------------                                                   
  87.  * * IMPORTANT!! * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  88.  * If you've been running version 1.0 of this program,  you MUST execute * 
  89.  *  10TO11.EXE in the BCHECK directory prior to running version 1.1 or   *
  90.  *                    any later version of BCHECKERS!!                   *
  91.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  92.  
  93. The data file BCHECK.BBS in versions after 1.0 now hold the players' comments 
  94. to each other and a draw-request indicator. Each record is 78 bytes longer 
  95. than in version 1.0. If you run later versions without running 10TO11.EXE, 
  96. you will corrupt your BCHECK.BBS file and lose all games in progress. Your 
  97. callers probably won't appreciate this!
  98.  
  99. To upgrade, overwrite your old copy of BCHECK.EXE with the new version. Copy
  100. the 10TO11.EXE file to the directory containing your BCHECK.BBS file. Close
  101. any tasks that might access the BCHECK program, then type the following at 
  102. the DOS prompt:
  103.  
  104.   10TO11
  105.  
  106. This will update the BCHECK.BBS file to the new format. Once completed, you 
  107. may delete the 10TO11.EXE program. If you don't mind losing all your games, 
  108. just delete the BCHECK.BBS file from the DOS prompt. 
  109.  
  110. IF YOU'RE NOT NOW RUNNING VERSION 1.0, YOU DO *NOT* NEED TO USE 10TO11.EXE!!
  111.  
  112.  
  113.                              RUNNING BCHECKERS
  114.                              -----------------
  115. To get the door up and running when not upgrading, perform the following...
  116.  
  117. 1) Copy the BCHECK.EXE file to the directory from which you plan to run
  118.    the door.
  119.  
  120. 2) Create a door batch file, similar to the following: 
  121.  
  122.        CD \BBS\DOORS           (location of BCHECK executable)
  123.        BCHECK <parameters>     (see below)
  124.        CD \BBS
  125.        EXIT
  126.  
  127. 3) Create a menu entry to call the door. This varies according to your
  128.    BBS software. I recommend a "spawn" type of door call (e.g.: type 7 on
  129.    QuickBBS or Remote Access).
  130.   
  131. That's really about all there is to it! Now, you need to know about the
  132. command line parameters, so here goes...
  133.  
  134.       
  135.                           COMMAND LINE PARAMETERS
  136.                           -----------------------
  137. ** Soapbox mode ON **
  138. One thing that has always irritated me is the number of config files and
  139. the like that clutter my directories. I see no need to have an executable, 
  140. a maintenance program, a config file and program, and a data file for each 
  141. game (like most door programmers seem to prefer). I've designed BCheckers 
  142. so it doesn't need all these files -- all it uses, besides the executable, 
  143. is one data file (BCHECK.BBS) to store ALL the games, and another to store 
  144. wins and losses for the Hall of Fame. All configuration of the program is 
  145. handled via command line parameters.           
  146. ** Soapbox mode OFF **
  147.  
  148. Call the program with the following syntax:
  149.  
  150. BCHECK <path> <DtoL> <DtoK> <MaxGam> <InAct> <MaxTim> <PageOff> <PageOn>
  151.                   
  152. Where:
  153.  
  154. <path>    Path to the door drop file. This will vary depending on the
  155.           node using the door. I usually set things up so the node is
  156.           passed to the door batch file, so the door can be called
  157.           something like:  BCHECK \BBS\NODE%1. That way, I can use the
  158.           same batch file for several nodes. This parameter is REQUIRED.
  159.  
  160. <DtoL>    "Days to Lose" - Number of days before an inactive game is 
  161.           aborted. This is the way we keep games from piling up without 
  162.           someone actively playing. If a player does not make a move in 
  163.           a game after this number of days, the last player to move is 
  164.           declared the winner (if there ARE two players -- otherwise the
  165.           game is simply deleted).
  166.           Default value is 21 days (3 weeks). If you choose to use this 
  167.           default but want to specify a value for one of the subsequent 
  168.           parameters, insert XX (or any other string of *non-numeric* 
  169.           characters) as a placeholder. All this really does is make 
  170.           sure the help screens give the correct value to your callers, 
  171.           but see also the "maintenance" section later in this document.
  172.          
  173. <DtoK>    "Days to Keep" - Number of days a completed game is held before 
  174.           being purged from the game file. This allows a few days for the 
  175.           players and other callers to see the outcome. Treat this just as 
  176.           you would the DtoL parameter. Default is 10 days. 
  177.          
  178. <MaxGam>  Maximum number of games an individual can play at once. Default 
  179.           value is 5. Again, insert a placeholder if you want to specify 
  180.           a value for any subsequent parameters.
  181.          
  182. <InAct>   Time, in seconds, before a user is returned to the BBS for
  183.           inactivity. If your caller goes to sleep at the terminal, this
  184.           will bump him off and back to the board. Keep this number high
  185.           enough that the caller has enough time to think about what
  186.           move he wants to make. Default is 200 seconds.
  187.          
  188. <MaxTim>  Maximum time, in minutes, you will allow a caller to spend in 
  189.           the door. Default is the total amount of connect time available 
  190.           to the caller (ie: no restriction).                  
  191.          
  192. <PageOff> Time, in minutes after midnight, for paging hours to end. Valid
  193.           numbers are 0-1440. By default, paging is always on; so if you
  194.           enter an invalid number, that's what you'll get.  
  195.           
  196. <PageOn>  Time, in minutes since midnight, for paging hours to resume. If 
  197.           you never want a caller to page you, enter a number for PageOff, 
  198.           but don't provide a PageOn value.
  199.  
  200.  
  201. Examples:
  202.  
  203.    BCHECK \BBS\NODE1
  204.    
  205.          Bring up the door with the drop file located in the \BBS\NODE1
  206.          directory. All other parameters take their default values.
  207.          
  208.    BCHECK \BBS\NODE2 30 XX XX 300 30
  209.    
  210.          Run the door from node 2. Thirty days before declaring a winner 
  211.          due to inactivity. Use the default value for days to keep and 
  212.          games per player (10 days and 5 games, respectively). Increase 
  213.          the inactivity timeout from 200 (default) to 300 seconds, and
  214.          allow no more than 30 minutes in the door.
  215.     
  216.    BCHECK \BBS\NODE1 15
  217.      
  218.          Same as the first example, but keep games for only 15 days before
  219.          declaring a winner due to inactivity.  
  220.              
  221.    BCHECK XX 20
  222.    
  223.          ERROR. Path to the drop file is REQUIRED. This will assume the
  224.          drop file is located in the XX directory, which is probably not
  225.          what you wanted. 
  226.          
  227.    BCHECK \BBS\NODE1 XX XX XX XX XX 1260 420
  228.    
  229.          Run BCheckers with the defaults, except disable sysop paging at
  230.          9 p.m. and resume at 7 a.m.
  231.                      
  232.  
  233.                               SYSOP FUNCTIONS
  234.                               ---------------
  235. Status Line - By default, the status line is OFF. To turn it on, press F10.
  236. The status line lists the name of the user currently on-line, his location, 
  237. and baud rate (0 if the door is operating in local mode). You may also find
  238. out how much time the user has left, check for indicators as to whether the 
  239. user has ANSI and/or AVATAR modes on, etc.  If the user wishes to Chat with 
  240. the sysop (ie: they have paged the sysop, but haven't received a response), 
  241. a [Want-Chat] indicator will flash on the status line. 
  242.  
  243. [F1]..[F10] - The Function keys [F1] thru [F10] allows the sysop access to 
  244.               various types of information on the status line, or to turn 
  245.               the status line off. These keys are as follows:
  246.  
  247.               [F1] -  Display basic door and user information
  248.               [F2] -  Display phone numbers and important dates
  249.               [F3] -  Display security flags and up/download info
  250.               [F4] -  Display system information and current time
  251.               [F5] -  Display message info and user's settings
  252.               [F6] -  Display chat reason and sysop's comment
  253.               [F9] -  Display help information for sysop
  254.               [F10] - Turn off the status line                               
  255.               
  256. In normal usage, the screen will often scroll one line when it attempts to 
  257. print on a line that is "under" the status line (although it looks fine on 
  258. remote). Keep the status line off when playing in local mode.
  259.  
  260. The following other function keys are also available to the sysop:
  261.  
  262. [UP]/[DOWN] - Use the arrow keys to increase or decrease the amount of 
  263.               time the caller has left in the door.
  264.  
  265. [Alt]-[C] -   Allows the sysop to break into chat with the caller at any 
  266.               time. [Alt]-[C] again, or [ESC] will end chat mode. (Notice 
  267.               that the Want-Chat indicator will also be turned off, if it 
  268.               was flashing). If your door is running under Apex, Remote
  269.               Access or QuickBBS, paging from within the door will also
  270.               cause the Want-Chat indicator to stay lit when the user 
  271.               returns to the BBS.
  272.  
  273. [Alt]-[J] -   Allows the sysop to shell to DOS, if enough memory is 
  274.               available. Simply type EXIT to return to the door.
  275.  
  276. [Alt]-[H] -   Hang up on the user. Drops carrier and returns to the BBS.
  277.  
  278. [Alt]-[L] -   This key locks the user out of the BBS. It first hangs up 
  279.               on the user, and then sets their security level to 0, to 
  280.               prevent them from ever logging on again. This feature may 
  281.               require use of the EXITINFO.BBS file, depending on what 
  282.               system the door is running under.
  283.  
  284. [Alt]-[K] -   The "User Keyboard-Off" key allows the sysop to temporarily 
  285.               prevent the user from typing anything on their keyboard. 
  286.               This has no effect on the local keyboard, but causes the
  287.               door to ignore any keystrokes from remote.
  288.  
  289. [Alt]-[N] -   The "Sysop Next" key, this function reserves the system for 
  290.               use by the sysop after the user logs off, if the door is 
  291.               running under an Apex or RA 1.00 or later system.
  292.  
  293. [Alt]-[D] -   "Drop to BBS" key. This function allows the sysop to exit 
  294.               the door and return the user to the BBS, without hanging up.
  295.  
  296.                                                       
  297.                                USING THE DOOR
  298.                                --------------
  299. The door is menu-driven, and most of the functions are self-explanatory. A 
  300. brief overview will be given here.
  301.  
  302. The door is based on the "touch-move" premise. Once a legal piece is chosen, 
  303. the caller is *required* to move that piece. If only one move is available 
  304. for the chosen piece, that move will be made immediately -- otherwise, the 
  305. door will prompt for a destination square by highlighting the legal moves 
  306. with flashing pieces. Also, the door will not allow the caller to "take back" 
  307. a move. Thus, it is very important that the caller use due discretion in 
  308. evaluating the board position *before* they start to make a move. 
  309.  
  310. This is not because I am lazy -- the door has been *purposely* programmed 
  311. this way. Checkers is supposed to be something of an intellectual game, and 
  312. it is the opinion of this programmer that allowing "take-backs" defeats the 
  313. purpose of having game doors that are in principle a cerebral challenge 
  314. between the players. 
  315.  
  316. The door conforms to Hoyle's rule for jumps (rather than "Huff or Blow"). If 
  317. the caller has a capture, he *must* make a capture. If a new game is started, 
  318. the player is assigned the Black pieces for his first move (in keeping with 
  319. Checkers conventions). The opponent is "No One" until someone joins the game.
  320.     
  321. The opening screen allows the caller to perform most game operations, as
  322. follows:
  323.  
  324. 1) Make a Move -- The caller may make a move in a game in which he is
  325.    already a player. These games are presented in a list, from which the 
  326.    player chooses the game number. The game selected is then presented to 
  327.    him.   
  328.    If it isn't the caller's move, or the game has been completed, a message 
  329.    to that effect will be displayed. 
  330.    If it is the caller's move, the door will first check if his opponent 
  331.    has offered a draw. If so, he is allowed to accept or reject the offer. 
  332.    If accepted, the game is drawn immediately...otherwise, the offer is 
  333.    discarded and the game proceeds normally. The door then presents the
  334.    caller with his opponent's message and the following choices:
  335.    
  336.    <E>xit -- Abort move selection and return to the game selection menu.
  337.    <M>ove -- Make a move. The caller will be prompted for a piece to move
  338.      and a destination square, if required. If the caller selects an 
  339.      illegal move, the door displays an error message and highlights the 
  340.      legal moves.
  341.      Once a move is made, the door checks for whether the opponent also has 
  342.      a legal move -- if not, the game is won! Otherwise, the caller has the 
  343.      opportunity to either leave a message to his opponent or offer a draw. 
  344.      Up to 75 alphanumeric and punctuation characters may be entered for 
  345.      the opponent to read prior to his next move. If an offer to draw is
  346.      made, a confirmation prompt is displayed to ensure that the key wasn't
  347.      hit by mistake. If confirmed, the opponent will be shown the offer and 
  348.      the game will be immediately declared a draw if he accepts.
  349.    <R>edraw Screen -- Use this if something messes up in data transmission
  350.      and the screen needs to be cleaned up.
  351.    <F>orfeit Game -- Use if you want to "give up" and allow your opponent
  352.      to win. The caller is prompted for confirmation before the game is
  353.      declared lost. You must have an opponent to forfeit to!
  354.           
  355. 2) View Games in Progress -- Displays any game that has not been deleted. A
  356.    list of current games is presented to the user so he may select one to
  357.    view. The board position is then displayed along with status information.
  358. 3) Start a New Game -- Same as #1 above, but starts a new game. The caller
  359.    is always given the Black pieces to start the game. Of course, the
  360.    <F>orfeit and <D>raw options are not available in this case, since the 
  361.    caller has no opponent yet.                                  
  362. 4) Join a Game -- Allows the caller to join a game that someone else 
  363.    started. Having joined the game, the player receives the White pieces, 
  364.    and is given the opportunity to make a move immediately.
  365. 5) Checkers Rules and History -- Displays a 3-screen overview of Checkers
  366.    rules and history. This has been paraphrased from Hoyle.
  367. 6) Door Help -- A succinct listing of non-obvious information that should
  368.    prove useful to first-time users of the door.   
  369. 7) Page the Sysop -- The sysop can break into chat mode at any time with 
  370.    Alt-C...this command allows the caller to request chat mode.    
  371. 8) Quit to the BBS -- Exit the door and return to the board.
  372. 9) Logoff -- Exit completely, dropping carrier.
  373.  
  374.                          CARE AND FEEDING OF BCHECK
  375.                          --------------------------                                 
  376. **Warning** While you *can* run the MAINT function with the door online, if 
  377. there are many games or players this may cause a timeout of a user's file 
  378. access in another task. This won't cause any damage, but it is best to take 
  379. down all of your BBS nodes prior to running the MAINT function. The other
  380. functions do not keep the files open as long, and are thus less likely to
  381. cause difficulties -- just make sure you have DOS's SHARE.EXE loaded.  
  382.  
  383.                                 Maintenance
  384.                              
  385. In order to actually delete old games and declare winners in expired games,
  386. the maintenance function should be run daily along with your normal BBS
  387. routine. This is accomplished by using the same command line as for normal
  388. execution of the program, but replacing the path to the drop file with the
  389. string "MAINT". This will go through the game data file and update it as
  390. needed. 
  391.  
  392. I highly recommend that other parameters used during maintenance be kept 
  393. the same as you normally use when running the door. If you don't, no real 
  394. harm will befall you, but your callers may become upset with you once they 
  395. realize that their help files state the game is deleted after 21 days but 
  396. the games are actually deleted in 15!
  397.  
  398. Examples:    
  399.  
  400.    BCHECK MAINT
  401.     
  402.          Update the BCHECK.BBS file, using defaults.
  403.     
  404.    BCHECK MAINT 30 XX XX 300 30
  405.    
  406.          Use this to perform maintenance on the games data file, using the
  407.          same parameters as used for running the game (from example 2
  408.          displayed previously).
  409.  
  410.                              Game Deletion
  411.  
  412. If desired, an individual game may be deleted from the command line. This
  413. enables you to get rid of games from players like "George Washington," or
  414. otherwise deal with twits without adversely affecting the other callers. 
  415.  
  416. For example, call the program as follows to delete game #4:
  417.  
  418.    BCHECK DELETE 4
  419.    
  420. **Warning** If you omit the game number on the command line, the program 
  421. will delete game number 21 (if it exists). This is because 21 is the 
  422. default number of the command line parameter at this position (days
  423. until the game is lost due to inactivity). I could code it to avoid this
  424. problem, but it would bloat the code unnecessarily and in general I feel
  425. that if you are going to do this kind of thing, you'd better be on your
  426. toes anyway. If the number is higher than the total number of games, or 
  427. zero or less, a harmless error message is displayed. 
  428.  
  429. If you wish to delete *all* the games, simply delete the BCHECK.BBS file 
  430. at the DOS prompt. The file will be created as needed the next time the 
  431. door is used.
  432.  
  433. I do not plan anything more elaborate than this for sysop intervention,
  434. but will entertain any ideas you may have.
  435.  
  436.                             Status Bulletin
  437.                            
  438. BCheckers will generate a game status bulletin when called with the 
  439. following syntax:
  440.  
  441. BCHECK STATUS 0|1
  442.  
  443. The bulletin is sent to StdOut, and can be redirected to a file for display
  444. on your BBS; or even redirected to the COM port and run as a separate door! 
  445. The 0 or 1 indicates whether an ASCII or ANSI bulletin is generated; if 
  446. omitted, you will get an ASCII bulletin. This bulletin indicates whose move 
  447. it is in any active game, as follows:
  448.  
  449.          BCHECKERS Game Status
  450.          
  451. Game #  1: Jane Doe needs an opponent...
  452. Game #  2: Ringo Bowman needs an opponent...
  453. Game #  8: John Public to move...
  454. Game #  9: Joe Blow to move...
  455. [etc...]
  456.  
  457. Press ENTER               
  458.  
  459. Completed games do not appear in the bulletin. Note that the bulletin 
  460. actually begins with an ASCII 12 character (clear screen on most systems) 
  461. and ends with an ASCII 1 (wait for the ENTER key).
  462.                                                                   
  463.                           Hall of Fame Bulletin
  464.  
  465. BCheckers will read the BCHECK.HOF file and generate a hall of fame bulletin 
  466. when called with the following syntax:
  467.  
  468. BCHECK FAME 0|1
  469.  
  470. Like the game status, the bulletin is sent to StdOut, and the 0 or 1 direct
  471. the program to generate an ASCII or ANSI bulletin. The bulletin gives
  472. player stats as follows:
  473.      
  474.               BCHECKERS HALL of FAME
  475.  
  476.       Player            Wins Losses Draws Percent
  477.       ------            ---- ------ ----- -------
  478. Richard Hangslough        2     0     0     100
  479. Boz Scaggs               11     2     0      84
  480. Jethro Tull               9     2     3      75
  481. Pink Floyd               10     2     8      70
  482. Howard Johnson            4     2     3      61
  483. Bruce Bowman              7     4     3      60
  484. Fleetwood Mac             2     2     3      50
  485.  
  486. Press ENTER  
  487.  
  488. Up to 18 players will be listed, in order of winning percentage. Draws are
  489. treated as 1/2 game won and 1/2 game lost. The percentage is truncated to 
  490. the nearest percent.
  491.       
  492.                               REGISTRATION
  493.                               ------------
  494. To Other Shareware Authors:
  495.  
  496. I will happily exchange registrations to any of my products, if what you 
  497. have interests me at all.  Netmail me with the specifics if interested.
  498.  
  499. (Not responsible for lost or misrouted mail!).
  500.  
  501. The key consists of a small file that resides in the same directory as
  502. your game file (BCHECK.BBS). Ordinarily, I would find this abhorrent -- 
  503. but I'm just too stupid to figure out a way to patch the executable with 
  504. a key entered in a config program (which would also require a config 
  505. program!).
  506.  
  507.                          Benefits of Registration
  508.                          ------------------------
  509.  
  510. 1) The door will only allow configuration of "days to lose" and drop file
  511. path until you register. You can go ahead and enter the extra parameters 
  512. on the command line, but they will be ignored. Most of the defaults are
  513. pretty reasonable, though.
  514.  
  515. 2) You cannot disable paging or set paging hours unless registered.
  516.  
  517. 3) The door will only allow up to 12 concurrent games until you register.
  518. Once registered, up to 200 games may be played.                
  519.  
  520. 4) The door will display -= UNREGISTERED =- when returning to the BBS
  521. until you register.
  522.  
  523. 5) You will receive preferential support from the author.
  524.  
  525. 6) You will have peace of mind, knowing that you are supporting shareware.
  526.  
  527. The key routine could probably be cracked eventually by someone with a hex 
  528. editor and a lot of time on their hands. More elaborate protection schemes 
  529. than mine have suffered this fate. However, I'm not asking much money for 
  530. this -- so save yourself some effort and cough up the cash.
  531.  
  532. How do you register?  Send $10 (US) cash, check or money order to:
  533.  
  534.                        Bruce Bowman
  535.                        8364 S SR 39
  536.                        Clayton, IN  46118
  537.  
  538. Allow 2 weeks for personal checks to clear. I'm told it's not a good idea 
  539. to send cash via the mail, but I've never had problems with it. If you 
  540. decide to do so, and the money gets ripped off, I will feel sorry for you 
  541. but I won't waive your registration fee over it.
  542.  
  543. Accompany this with the form on the following page...or otherwise provide 
  544. this information.  Registrations without this information WILL be ignored
  545. (I will make a feeble attempt to contact you, and eventually tear up your
  546. check).
  547.  
  548. It is also a very good idea to send a copy of your BBS drop file with your
  549. registration. Since the door reads data from your drop file to determine
  550. if the key will work, it is very important that both the sysop name and
  551. the BBS name be provided EXACTLY as present in your drop files. If you
  552. cannot guarantee this, you should send me your drop files.
  553.  
  554. On occasion I have attempted to netmail certain individuals keys, only to 
  555. get bad connects -- I simply cannot afford this. If your BBS is only online
  556. during certain hours, let me know. If I get two bad connects trying to 
  557. netmail a key, I will give up and put it on hold for you and notify you of 
  558. this fact via routed netmail (which itself is not very reliable anymore).
  559.  
  560. NOTE:
  561. Registered keyholders receive FREE UPGRADES when/if they become available.
  562. You will have to check in though, since I don't plan to notify everyone of
  563. an upgrade individually.
  564.  
  565.                           BCHECKERS REGISTRATION 
  566.                                Version 1.2
  567.                               
  568. IMPORTANT!  The BBS name and SYSOP name must match your door   IMPORTANT!
  569. IMPORTANT! drop file EXACTLY, or your key won't work. Consider IMPORTANT! 
  570. IMPORTANT!     sending us a copy of your BBS drop file(s)!     IMPORTANT!                    
  571.  
  572. *SYSOP NAME: __________________________________________________________
  573.  
  574. ADDRESS: ______________________________________________________________
  575.  
  576. _______________________________________________________________________
  577.  
  578. _______________________________________________________________________
  579.  
  580. *BBS NAME: ____________________________________________________________
  581.  
  582. BBS Phone: ____________________________________________________________
  583.  
  584. BBS Software/Version: _________________________________________________
  585.  
  586. NETWORK: _______________________________________ (FidoNet, etc, if any)
  587.  
  588. NETWORK NODE NUMBER: _______ : ________ / ________ (if above completed)
  589.  
  590. AMOUNT ENCLOSED: ______________________
  591.  
  592. HOW DO YOU WANT TO PICK UP THE KEY?
  593.  
  594. [ ] ... Put on hold for me at 1:231/710 for the Net/Node listed above.
  595.  
  596. [ ] ... Send via FidoNet crashmail to the node indicated above.
  597.  
  598. [ ] ... Here's $2.00 Upload it to me as well as the latest version.  
  599.         Acount Information as Follows:
  600.  
  601.         Account Name:  Bruce Bowman
  602.         
  603.         Password: ____________________________________
  604.         
  605.         Miscellaneous Info: ________________________________________
  606.  
  607.         ____________________________________________________________
  608.  
  609.  
  610. [ ] ... Send on disk to the address above (very slow!) Please add $5 to 
  611.         cover disk, mailing costs, and my hassle.
  612.  
  613.         Please ship my key and latest copy via  [ ] - 5.25"   [ ] - 3.5"
  614.  
  615.  
  616. COMMENTS/SUGGESTIONS/BUGS: ____________________________________________
  617.  
  618. _______________________________________________________________________
  619.  
  620. _______________________________________________________________________  
  621. @1.2
  622.                             TECHNICAL SUPPORT
  623.                             ----------------- 
  624.  
  625. TECHNICAL SUPPORT IS PROVIDED ONLY THROUGH EMAIL OR CALLING MY BBS! 
  626.  
  627. I have had people ask me to call them long-distance on my dime -- I simply 
  628. don't make enough money on BCheckers to justify this. There seems to be a
  629. perception amongst the sysop community that door authors are getting rich
  630. selling their doors, but the truth is the vast majority of sysops never
  631. register their doors. To provide some perspective, I've spent well over a 
  632. hundred hours programming this door. To date, I've received $30 in return.
  633.  
  634. To obtain support, you must call my BBS or send me email. You won't obtain 
  635. full access to my BBS on your first call, but you can leave a message to 
  636. the sysop at logoff, which I will get. You'll have to call the BBS again
  637. to get your reply. 
  638.  
  639.                    The H.O.M.E. BBS
  640.                    (317) 539-6579 - 28.8 kbps
  641.                    FIDONET:  1:231/710
  642.                    DOORNET:  75:7317/71
  643.                    INTERNET: beb@lilly.com or
  644.                              Bruce_Bowman@f710.n231.z1.fidonet.org
  645.  
  646. If you are having problems with your key, you MUST give me a copy of your 
  647. door drop files, or I won't be able to help you.
  648.  
  649. FREQUENT COMPLAINTS
  650. -------------------
  651.  
  652. Q: The door can't find the game file, or it can't find my key even though 
  653.    I've registered.
  654. A: Run the door from the directory containing the game file and the key.
  655.    The executable can be anywhere on your path, and the drop file path
  656.    is passed on the command line.
  657.    If it still does not recognize your key, you either did not provide 
  658.    the correct BBS and sysop names on your registration form, or your
  659.    system is misconfigured so this information is not appearing in your
  660.    drop files. Send a copy of your drop files to the support BBS.
  661.    
  662. Q: I know there's a game in there waiting for a new player, but the door
  663.    won't let me make a move in that game. It doesn't even show up in the
  664.    play list.
  665. A: Use the "join a game" function rather than "make a move."
  666.  
  667. Q: The screen display gets messed up -- once it prints a move, the screen
  668.    jumps up one line and subsequent prints overwrite the board.
  669. A: This happens only on the local screen when the status line is turned
  670.    on. The remote screen is not affected. For local play, turn off the 
  671.    status line with F10 (it defaults to OFF anyway). I assume any local 
  672.    player already knows his own user stats.
  673.    
  674. Q: The game prints [2;4m brackets and other junk characters all over.
  675. A: The door requires ANSI graphics capability. Exit the door and rectify 
  676.    the situation.
  677.   
  678. Q: The status line function keys don't work right -- they cause the door 
  679.    to act peculiar and even lock up.
  680. A: Have you defined the offending F-keys to launch a macro? Don't feel bad 
  681.    -- I did this myself in DESQview, and was pretty bewildered for awhile!
  682.                                   
  683. Q: The file BCHECK.BBS or BCHECK.HOF exists, but I occasionally still get 
  684.    a message from the door saying "Error opening BCHECK.BBS/BCHECK.HOF!"
  685. A: The door will try 20 times to open the file over a 10-second interval. If 
  686.    this fails, BCheckers gives up with an error. 
  687.    You may be running out of file handles. Increase the number of FILES in 
  688.    your CONFIG.SYS. 
  689.    It is also possible that one task in a multi-tasking environment opened
  690.    the file, and then crashed without closing it. If so, you will probably
  691.    have to reboot to clear the error.
  692.    This may also rarely happen during intensive disk activity in a multi-
  693.    tasking environment (for example, when copying files to/from floppies). 
  694.    Use a copy utility (like DVCOPY) that will properly release time slices 
  695.    to your door.
  696.    You *do* have DOS's SHARE.EXE loaded, don't you?
  697.  
  698. Q: The door gives me the error message -- "Timeout on BCHECK.BBS read 
  699.    operation."  What does THAT mean?
  700. A: As before, a task has grabbed exclusive access to the file and never
  701.    closed it (or at least didn't do so within 10 seconds). The remedy is
  702.    pretty much the same; although if you were running the MAINT procedure
  703.    during the error, the door will probably work now without rebooting.
  704.  
  705. Q: BCheckers made me move somewhere I didn't want to move!
  706. A: The door enforces Hoyle's rules, and will not allow a caller to "cheat."
  707.    Some (most?) of your callers will not be familiar with them...the key 
  708.    points are presented in the door help screens.      
  709.  
  710. PRODUCT HISTORY
  711. ---------------
  712. 1/81   Wrote my first Checkers game, in BASIC (of all things). Artificial 
  713.        intelligence -- play against the game. SLOW....
  714.          
  715. 3/94   Decided to write BCheckers, as an exercise in teaching myself C.
  716.        Found out I could port almost *none* of my original BASIC code.
  717.  
  718. 4/94   First beta release of BCheckers (version 0.90ß). Bug-laden.
  719.  
  720. 5/94   Released version 0.91ß. Zapped bug that failed to recognize the 
  721.        drop file path (thanks, Bill!). Removed debugging code from the 
  722.        executable. Fixed bug that caused door not to recognize a win. 
  723.        Fixed bug that allowed the player to select games that weren't 
  724.        in his play list. Speeded up the maintenance function.   
  725.  
  726. 5/94   Version 0.92ß. Made prompts white in move mode so they are more
  727.        easy to see. Implemented a new game delete function. Thanks yet
  728.        again to Bill Atkinson for these suggestions.
  729.        Improved update speed of "pieces captured" fields (upper right 
  730.        corner of the screen). Improved file sharing functions so the 
  731.        door can now be run multi-node without fear (although none of 
  732.        the beta testers were able to break even the last version). 
  733.  
  734. 6/94   Released version 1.0 (finally!). Fixed bug where the game always
  735.        played in registered mode (boy, you guys would've loved that)!
  736.        Apparently, fixing the drop file bug introduced another one. I 
  737.        believe I have it now...
  738.        Lowered the price of the door to $8 -- $10 seemed a little too 
  739.        much. Later versions will probably be more expensive.        
  740.  
  741. 6/94   Released version 1.0a. Version 1.0 was never really hatched, but
  742.        a few people did file request it. While it's highly unlikely you
  743.        will experience problems running 1.0, 1.0a does include more 
  744.        testing for file access conflicts in multi-node systems (and
  745.        helpful error messages). Other minor cosmetic improvements (like
  746.        stating that you are indeed being logged off when requested). 
  747.  
  748. 7/94   Released version 1.1 -- some minor bug fixes, as follows:
  749.  
  750.        1) If more than 19 games, the <more> prompt is no longer displayed 
  751.           on the same line as the 19th game. 
  752.        2) The "taken pieces" display would sometimes overwrite part of the 
  753.           "Checkers" logo if a player had crowned more pieces than his 
  754.           opponent had captured (a *very* rare circumstance). Fixed.
  755.        3) The game wouldn't recognize an upper case "Y" to verify a game 
  756.           forfeit (it would stubbornly wait for a lower case "y"). Fixed.
  757.        4) The color intensity on the remote screen would sometimes not be 
  758.           set properly. Fixed.
  759.           
  760.        New stuff: 
  761.        
  762.        1) Added the game-draw function. I have visions of many people out 
  763.           there playing version 1.0 with 1 king vs. 1 king, and no way to 
  764.           bring the game to a satisfactory conclusion! Shame on me...
  765.        2) Added the ability to set sysop paging hours.
  766.        3) Added support for leaving a note to your opponent.
  767.        4) Added the game status bulletin generator.
  768.        5) Added the hall of fame bulletin generator.
  769.        6) Added support for the RA 2.00 EXITINFO.BBS drop file format.
  770.        7) Logoff key is now "!". It was too easy to accidentally hit "9" 
  771.           rather than "8", and end up disconnecting rather than returning 
  772.           to the BBS.    
  773.        
  774.        I felt the above warranted another $2 in the registration fee. Back
  775.        to a $10 registration. 
  776.        The BCheckers executable was compressed with Yoshi's LZEXE for 
  777.        more rapid loading from disk. Because of this, the program may 
  778.        require more memory to run than you may have anticipated from its 
  779.        size alone.
  780.  
  781. 7/94   Released version 1.1a. Found a minor bug in the Hall of Fame 
  782.        bulletin and squashed it.
  783.  
  784. 8/94   Released version 1.2. Added a carriage return to the bulletin code
  785.        in case the caller does not have screen clearing turned on. Changed
  786.        all "Press any key" prompts to "Press ENTER." This allows the user
  787.        to still take advantage of type-ahead, while fixing a problem with 
  788.        some modems sending a ^Q character when using XON/XOFF handshaking. 
  789.        Speeded up both the main menu and the board drawing routines. Board
  790.        display now shows the player's names on both sides of the board.
  791.  
  792.       Some drop file converters pad the BBS name or sysop name with extra
  793.        spaces, which caused difficulties in key recognition. BCheckers now
  794.        strips these spaces prior to applying the key recognition routine.
  795.                                                     
  796.        Made some minor changes in check for move legality in anticipation
  797.        of a "play again the computer" mode for version 2.0.
  798.  
  799.  
  800.                             FUTURE OF BCHECKERS
  801.                             ------------------- 
  802. Ultimately, we may add internode or inter-BBS play. I've also had a request 
  803. for a "play against the computer" mode, which I plan to implement in version
  804. 2.0. Register now while the program is still cheap!
  805.  
  806. I would welcome other ideas on how BCheckers can be improved.